// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/22/2015 1:43:48 PM				
// -----------------------------

#ifndef _GraphicsManager_h
#define _GraphicsManager_h

#include "Common.h"

namespace Flow
{

	class IWindow;
	class IGraphicsDevice;
	class IMutex;

	class TextureManager;
	class ShaderManager;
	class SpriteBatch;

	class GraphicsManager
	{
	public:

		GraphicsManager();
		~GraphicsManager();

		Bool	Initialize(IWindow* lpWindow);
		void	Draw();

	private:

		IGraphicsDevice*	m_lpGraphicsDevice;
		IMutex*				m_lpGraphicsMutex;
		TextureManager*		m_lpTextures;
		ShaderManager*		m_lpShaders;
		SpriteBatch*		m_lpSpriteBatch;

		GraphicsManager(const GraphicsManager& refGraphicsManager);
		GraphicsManager& operator=(const GraphicsManager& refGraphicsManager);
	};

}

#endif